From: Ian Campbell Date: Fri, 3 Dec 2010 09:36:47 +0000 (+0000) Subject: libxc: osdep: convert xc_map_foreign_ranges() X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~11061 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=d52853b78cbbf036c089ba2811f16388e739a470;p=xen.git libxc: osdep: convert xc_map_foreign_ranges() Signed-off-by: Ian Campbell Signed-off-by: Ian Jackson --- diff --git a/tools/libxc/xc_foreign_memory.c b/tools/libxc/xc_foreign_memory.c index 95d1d43c78..907c02bd7e 100644 --- a/tools/libxc/xc_foreign_memory.c +++ b/tools/libxc/xc_foreign_memory.c @@ -27,6 +27,14 @@ void *xc_map_foreign_range(xc_interface *xch, uint32_t dom, dom, size, prot, mfn); } +void *xc_map_foreign_ranges(xc_interface *xch, uint32_t dom, + size_t size, int prot, size_t chunksize, + privcmd_mmap_entry_t entries[], int nentries) +{ + return xch->ops->u.privcmd.map_foreign_ranges(xch, xch->ops_handle, + dom, size, prot, chunksize, entries, nentries); +} + void *xc_map_foreign_batch(xc_interface *xch, uint32_t dom, int prot, xen_pfn_t *arr, int num) { diff --git a/tools/libxc/xc_linux.c b/tools/libxc/xc_linux.c index aa70cc8763..d247c9c193 100644 --- a/tools/libxc/xc_linux.c +++ b/tools/libxc/xc_linux.c @@ -303,9 +303,10 @@ static void *linux_privcmd_map_foreign_range(xc_interface *xch, xc_osdep_handle return ret; } -void *xc_map_foreign_ranges(xc_interface *xch, uint32_t dom, size_t size, int prot, - size_t chunksize, privcmd_mmap_entry_t entries[], - int nentries) +static void *linux_privcmd_map_foreign_ranges(xc_interface *xch, xc_osdep_handle h, + uint32_t dom, size_t size, int prot, + size_t chunksize, privcmd_mmap_entry_t entries[], + int nentries) { xen_pfn_t *arr; int num_per_entry; @@ -337,6 +338,7 @@ static struct xc_osdep_ops linux_privcmd_ops = { .map_foreign_batch = &linux_privcmd_map_foreign_batch, .map_foreign_bulk = &linux_privcmd_map_foreign_bulk, .map_foreign_range = &linux_privcmd_map_foreign_range, + .map_foreign_ranges = &linux_privcmd_map_foreign_ranges, }, }; diff --git a/tools/libxc/xc_minios.c b/tools/libxc/xc_minios.c index 83b5e324ec..942fa7b262 100644 --- a/tools/libxc/xc_minios.c +++ b/tools/libxc/xc_minios.c @@ -152,9 +152,10 @@ static void *minios_privcmd_map_foreign_range(xc_interface *xch, xc_osdep_handle return map_frames_ex(&mfn, size / getpagesize(), 0, 1, 1, dom, NULL, pt_prot); } -void *xc_map_foreign_ranges(xc_interface *xch, uint32_t dom, - size_t size, int prot, size_t chunksize, - privcmd_mmap_entry_t entries[], int nentries) +static void *minios_privcmd_map_foreign_ranges(xc_interface *xch, xc_osdep_handle h, + uint32_t dom, + size_t size, int prot, size_t chunksize, + privcmd_mmap_entry_t entries[], int nentries) { unsigned long *mfns; int i, j, n; @@ -192,6 +193,7 @@ static struct xc_osdep_ops minios_privcmd_ops = { .map_foreign_batch = &minios_privcmd_map_foreign_batch, .map_foreign_bulk = &minios_privcmd_map_foreign_bulk, .map_foreign_range = &minios_privcmd_map_foreign_range, + .map_foreign_ranges = &minios_privcmd_map_foreign_ranges, }, }; diff --git a/tools/libxc/xc_netbsd.c b/tools/libxc/xc_netbsd.c index 00f4ffc2a3..7c60104e4f 100644 --- a/tools/libxc/xc_netbsd.c +++ b/tools/libxc/xc_netbsd.c @@ -140,10 +140,12 @@ static void *netbsd_privcmd_map_foreign_range(xc_interface *xch, xc_osdep_handle return addr; } -void *xc_map_foreign_ranges(xc_interface *xch, uint32_t dom, - size_t size, int prot, size_t chunksize, - privcmd_mmap_entry_t entries[], int nentries) +static void *netbsd_privcmd_map_foreign_ranges(xc_interface *xch, xc_osdep_handle h, + uint32_t dom, + size_t size, int prot, size_t chunksize, + privcmd_mmap_entry_t entries[], int nentries) { + int fd = (int)h; privcmd_mmap_t ioctlx; int i, rc; void *addr; @@ -161,7 +163,7 @@ void *xc_map_foreign_ranges(xc_interface *xch, uint32_t dom, ioctlx.dom = dom; ioctlx.entry = entries; - rc = ioctl(xch->fd, IOCTL_PRIVCMD_MMAP, &ioctlx); + rc = ioctl(fd, IOCTL_PRIVCMD_MMAP, &ioctlx); if (rc) goto ioctl_failed; @@ -186,6 +188,7 @@ static struct xc_osdep_ops netbsd_privcmd_ops = { .map_foreign_batch = &netbsd_privcmd_map_foreign_batch, .map_foreign_bulk = &xc_map_foreign_bulk_compat, .map_foreign_range = &netbsd_privcmd_map_foreign_range, + .map_foreign_ranges = &netbsd_privcmd_map_foreign_ranges, }, }; diff --git a/tools/libxc/xc_solaris.c b/tools/libxc/xc_solaris.c index d9af863c6e..3867e8960a 100644 --- a/tools/libxc/xc_solaris.c +++ b/tools/libxc/xc_solaris.c @@ -130,15 +130,17 @@ static void *xc_map_foreign_range(xc_interface *xch, xc_osdep_handle h, return addr; } -void *xc_map_foreign_ranges(xc_interface *xch, uint32_t dom, - size_t size, int prot, size_t chunksize, - privcmd_mmap_entry_t entries[], int nentries) +static void *solaric_privcmd_map_foreign_ranges(xc_interface *xch, xc_osdep_handle h, + uint32_t dom, + size_t size, int prot, size_t chunksize, + privcmd_mmap_entry_t entries[], int nentries) { + int fd = (int)fd; privcmd_mmap_t ioctlx; int i, rc; void *addr; - addr = mmap(NULL, size, prot, MAP_SHARED, xch->fd, 0); + addr = mmap(NULL, size, prot, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) goto mmap_failed; @@ -151,7 +153,7 @@ void *xc_map_foreign_ranges(xc_interface *xch, uint32_t dom, ioctlx.dom = dom; ioctlx.entry = entries; - rc = ioctl(xch->fd, IOCTL_PRIVCMD_MMAP, &ioctlx); + rc = ioctl(fd, IOCTL_PRIVCMD_MMAP, &ioctlx); if (rc) goto ioctl_failed; @@ -176,6 +178,7 @@ static struct xc_osdep_ops solaris_privcmd_ops = { .map_foreign_batch = &solaris_privcmd_map_foreign_batch, .map_foreign_bulk = &xc_map_foreign_bulk_compat, .map_foreign_range = &solaris_privcmd_map_foreign_range, + .map_foreign_ranges = &solaris_privcmd_map_foreign_ranges, }, }; diff --git a/tools/libxc/xenctrlosdep.h b/tools/libxc/xenctrlosdep.h index eadbbc0808..5f93b7361d 100644 --- a/tools/libxc/xenctrlosdep.h +++ b/tools/libxc/xenctrlosdep.h @@ -70,6 +70,9 @@ struct xc_osdep_ops const xen_pfn_t *arr, int *err, unsigned int num); void *(*map_foreign_range)(xc_interface *xch, xc_osdep_handle h, uint32_t dom, int size, int prot, unsigned long mfn); + void *(*map_foreign_ranges)(xc_interface *xch, xc_osdep_handle h, uint32_t dom, size_t size, int prot, + size_t chunksize, privcmd_mmap_entry_t entries[], + int nentries); } privcmd; } u; };